// Copyright (c) rubicon IT GmbH, www.rubicon.eu
//
// See the NOTICE file distributed with this work for additional information
// regarding copyright ownership.  rubicon licenses this file to you under 
// the Apache License, Version 2.0 (the "License"); you may not use this 
// file except in compliance with the License.  You may obtain a copy of the 
// License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software 
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the 
// License for the specific language governing permissions and limitations
// under the License.

using System;
using ActiveAttributes.Extensions;
using NUnit.Framework;
using Remotion.Utilities;

namespace ActiveAttributes.UnitTests.Extensions
{
  [TestFixture]
  public class MethodBaseExtensionsTest
  {
    public class IsCompilerGenerated
    {
      [Test]
      public void GeneratedPropertyAccessorMethod ()
      {
        var methodInfo = typeof (DomainType).GetMethod ("get_Property");

        var result = methodInfo.IsCompilerGenerated ();

        Assert.That (result, Is.True);
      }

      [Test]
      public void UserDefinedMethod ()
      {
        var methodInfo = MemberInfoFromExpressionUtility.GetMethod (((DomainType obj) => obj.Method ()));

        var result = methodInfo.IsCompilerGenerated ();

        Assert.That (result, Is.False);
      }

      class DomainType
      {
        public bool Property { get; private set; }

        public void Method () { }
      }
    }

  }
}